全面!手把手教你决策树可视化(附链接&代码) 您所在的位置:网站首页 决策树编程 matalb 全面!手把手教你决策树可视化(附链接&代码)

全面!手把手教你决策树可视化(附链接&代码)

2024-07-14 16:39| 来源: 网络整理| 查看: 265

目录

决策树概述

决策树可视化的关键因素

效果展示

与现有可视化的比较

我们的决策树可视化

可视化特征-目标空间

细节部分

用可视化树来解释单次观测

横向决策树

简化结构

前车之鉴

代码示例

回归树可视化----以波士顿房价为例

分类树可视化---以红酒为例

实践经验

Scikit决策树的影子树

工具箱

SVG生成的矢量图

经验总结

未来工作

在适用于结构化数据的机器学习模型中,梯度提升和随机森林可以称得上是明星级模型,而决策树则是这两者的基石。决策树的可视化工作对于了解这些模型的工作原理有极大的帮助。然而目前的可视化软件工具很基础,对新手并不友好。例如,我们无法利用现有的库展示每个节点是如何划分变量的。此外,当把一个新样本放到决策树中进行预测时,我们只能生成一张可供展示的结果图片,而很难运用现有工具将整个过程可视化。 因此我们创建了一个通用包来在scikit-learn上可视化决策树模型以及解释模型。并且我们将在马上出版的机器学习书籍《The Mechanics of Machine Learning》(由JeremyHoward编写)中大量使用该包。以下是一个简单的决策树可视化示例:附书链接:https://mlbook.explained.ai/

本文演示了这项工作的成果,详细介绍了我们为此所做的尝试,并概述了该工具的在使用过程中的基本框架和技术细节。该可视化软件是dtreeviz的一部分,它是一个新兴的Python机器学习库。本文不会过多阐述决策树的基本原理,但为了方便您熟悉相关的术语使用,我们会对此做一个简短的概述。

决策树概述

决策树是一种基于二叉树(最多有左右两个子树)的机器学习模型。决策树遍历训练数据并将信息浓缩为二叉树的内部节点和叶节点,从而学习训练集中的观测值之间的关系,这些观测值表示为特征向量x和目标值y。(注:向量为粗体,标量为斜体。) 决策树中的每个叶子都表示特定的预测结果。回归树中输出的预测是一个(连续的)值,例如价格;而分类树中输出的预测是(离散的)目标类别(在scikit中表示为整数),例如是否患有癌症。决策树将观测分为具有相似目标值的组,每个叶子代表其中一个分组。对于回归而言,叶节点中观测的相似性意味着目标值之间的差异很小;而对于分类而言,则意味着大多数或所有观测属于同一类别。 任何一个从树根到叶节点的路径都要经过一系列(内部)决策节点。在训练过程中选出特定的分割点后,每个决策节点将x中的单个要素的值(xi)与分割点值进行比较。例如,在预测房租的模型中,决策节点会比较特征,如卧室数量和浴室数量等。(请参阅第3章,新样本预测的可视化效果。)即使在具有目标值离散的分类模型中,决策节点仍会比较数值特征值,这是因为在scitkit中,假定决策树模型的所有特征都是数值类型,因此分类变量必须要经过独热编码、合并、标签编码等处理。 为了得到决策节点,模型将遍历训练集的子集(或根节点的完整训练集)。在训练过程中,根据相似性最大化的原则,决策树将根据选择节点的特征和该特征空间内的分割点,将观察结果放入左右两个桶中(子集)。(该选择过程通常要对特征和特征值进行详尽的比较)左子集中样本的xi特征值均小于分割点,而右子集中样本的xi均大于分割点。通过为左分支和右分支创建决策节点,递归地进行树的构造。当达到某个停止标准(例如,节点中包含的观测数少于5)时,决策树终止生长。

决策树可视化的关键因素

决策树可视化应该突出以下重要元素,我们将在下文中具体阐述。

决策节点的特征vs目标值分布(在本文中称为特征-目标空间)。我们想知道能否基于特征和分割点将观测进行分类。

决策节点的特征和特征分割点。我们需要知道每个决策节点所选择的待考察的特征变量,以及将观测分类的标准。

叶节点纯度,这会影响我们的预测置信度。较高的纯度也就意味着那些在回归问题中较低方差的叶节点,以及分类问题中包含绝大多数目标的叶节点,它们都意味着更可靠的预测效果。

 叶节点预测值。基于训练集的目标值,该叶节点具体的预测结果。

决策节点中的样本数。我们需要了解决策节点上大部分样本的归属。

叶节点中的样本数。我们的目标是让决策树的叶节点更少,数目更大和纯度更高。如果样本的节点下的样本数太少,则可能由过拟合现象。

新样本如何从根节点开始被分到特定的叶节点。这有助于解释为什么新样本得到了相应的预测。例如,在预测公寓租金价格的回归树中,由于决策节点检查了卧室的数量,而新样本的卧室数量大于3,因此预测价格偏高。

效果展示在深入研究现有的可视化工具之前,想先介绍一下我们生成的效果图。本节重点介绍一些可视化的案例,这些是我们利用一些数据集构造的scikit回归和分类决策树。你还可以利用完整的库和代码复现所有案例。

附代码链接:

https://github.com/parrt/dtreeviz/blob/master/testing/gen_samples.py

与现有可视化工具的比较如果搜索“可视化决策树”,很快便能找到由scikit提供的基于Python语言的解决方案:sklearn.tree.export_graphviz。此外还可以找到R甚至SAS和IBM的可视化工具。在本节中,我们收集了现有的各种决策树可视化效果,并将它们与我们使用dtreeviz库制作的决策树进行了比较。在下一部分中,我们将对可视化进行更详细的讨论。 让我们使用默认设置下的scitkit可视化工具,在大家都很熟悉的的Iris数据集上绘制一个可视化的决策树。

scikit树很好地表现了树的结构,但我们仍然发现了一些问题。首先颜色的运用不够直观,比如在为什么有些节点是彩色的而有些不是这一问题上:如果颜色代表该分类器的预测类别,那么我们可能会认为只有叶子才是彩色的,因为只有叶子才有预测。事实证明,没有颜色的节点预测能力较弱。除此之外,基尼系数(确定性得分)会占用图中的空间,并且不利于解释。在每个节点中体现各目标类别的样本数很有用,但直方图可以提供更多信息。此外,利用有颜色的目标类别图例会很好。最后,将true和false用作边缘标签并不够清晰,³和


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有